// 迭代器设计模式

// 场景：协同开发一个任务清单

// a的代码 =========================

const todos = {
  life:['吃饭','睡觉','打豆豆'],
  learn:['语文','数学','外语'],
  work:['喝茶'],

  each: function(callback){
    const all = [].concat(this.life, this.learn, this.work)
    for (const item of all){
      callback(item)
    }
  },

  [Symbol.iterator]: function (){
    const all = [...this.life, ...this.learn, ...this.work]
    let index = 0
    return {
      next: function () {
        return {
          value: all[index],
          done: index++ >= all.length
        }
      }
    }
  }
}

// b的代码 ==========================

todos.each((item)=>{
  console.log(item)
})

console.log('=================')

for(const item of todos) console.log(item)

// each方法只适用当前对象解构，